﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Soa32.Zanfranceschi.Cliente.ServicoRef;
using Soa32.Zanfranceschi.Comum.Modelo;

namespace Soa32.Zanfranceschi.Cliente
{
	internal static class ServicoWebCliente
	{
		internal static void RequestReply(int chamadas)
		{
			IServico servico = new ServicoClient();
			IList<TimeSpan> tempos = new List<TimeSpan>();
			DateTime inicioTotal = DateTime.Now;
			for (int i = 0; i < chamadas; i++)
			{
				DateTime inicio = DateTime.Now;
				object entidade = servico.ObterResposta("requisição");
				tempos.Add(DateTime.Now - inicio);
			}
			TimeSpan duracao = DateTime.Now - inicioTotal;
			Console.WriteLine("Serviços Web Request/Reply. Resultados para {0} chamadas:", chamadas);
			Console.WriteLine("Tempo médio: {0}ms", TimeSpan.FromTicks(Convert.ToInt64(tempos.Average(t => t.Ticks))).TotalMilliseconds);
			Console.WriteLine("Tempo total: {0}ms", duracao.TotalMilliseconds);
		}
		internal static void Command(int chamadas)
		{
			IServico servico = new ServicoClient();
			IList<TimeSpan> tempos = new List<TimeSpan>();
			DateTime inicioTotal = DateTime.Now;
			for (int i = 0; i < chamadas; i++)
			{
				DateTime inicio = DateTime.Now;
				servico.EnviarComando(Entidade.Nova(), "comando");
				tempos.Add(DateTime.Now - inicio);
			}
			TimeSpan duracao = DateTime.Now - inicioTotal;
			Console.WriteLine("Serviços Web Command. Resultados para {0} chamadas:", chamadas);
			Console.WriteLine("Tempo médio: {0}ms", TimeSpan.FromTicks(Convert.ToInt64(tempos.Average(t => t.Ticks))).TotalMilliseconds);
			Console.WriteLine("Tempo total: {0}ms", duracao.TotalMilliseconds);
		}
	}
}
